{
  lib,
  stdenv,
  makeWrapper,
  dxx-rebirth,
  descent1-assets,
  descent2-assets,
}:

let
  generic =
    ver: assets:
    stdenv.mkDerivation {
      name = "d${toString ver}x-rebirth-full-${assets.version}";

      nativeBuildInputs = [ makeWrapper ];

      buildCommand = ''
        mkdir -p $out/bin

        makeWrapper ${dxx-rebirth}/bin/d${toString ver}x-rebirth $out/bin/descent${toString ver} \
          --add-flags "-hogdir ${assets}/share/games/descent${toString ver}"
      '';

      meta = with lib; {
        description = "Descent ${toString ver} using the DXX-Rebirth project engine and game assets from GOG";
        homepage = "https://www.dxx-rebirth.com/";
        license = with licenses; [
          free
          unfree
        ];
        maintainers = with maintainers; [ peterhoeg ];
        platforms = with platforms; linux;
        hydraPlatforms = [ ];
      };
    };

in
{
  d1x-rebirth-full = generic 1 descent1-assets;
  d2x-rebirth-full = generic 2 descent2-assets;
}
